package com.kai.mqtt.message.service;

import com.kai.mqtt.message.DupPubRelMessage;

import java.util.List;

/**
 * pubRel 消息重发存储服务，当 qos=2 时
 *
 * @author weijk
 * @since 2024/6/10
 */
public interface IDupPubRelMessageService {

    /**
     * 保存消息
     *
     * @param clientId         客户端 id
     * @param dupPubRelMessage 消息
     */
    void put(String clientId, DupPubRelMessage dupPubRelMessage);

    /**
     * 根据客户端 id 删除消息
     *
     * @param clientId 客户端 id
     */
    void remove(String clientId);

    /**
     * 根据客户端 id 和消息 id 删除消息
     *
     * @param clientId  客户端 id
     * @param messageId 消息 id
     */
    void remove(String clientId, Integer messageId);

    /**
     * 根据客户端 id 获取消息列表
     *
     * @param clientId 客户端 id
     * @return 消息列表
     */
    List<DupPubRelMessage> get(String clientId);
}
